package com.smarthome.core.user;

import java.util.List;

import com.smarthome.domain.bean.ShUser;
import com.smarthome.domain.vo.boss.DataGrid;
import com.smarthome.domain.vo.boss.PageHelper;

/**
 * 系统用户服务类
 */
public interface PropertyUserService {
	
	/**
	 * @title 添加用户 系统用户
 	 * @createTime 2015年9月28日 下午5:55:41
	 * @author dhc
	 */
	int add(ShUser user);

	/**
	 * @title 编辑用户
	 * @createTime 2015年9月28日 下午5:56:13
	 * @author dhc
	 */
	int edit(ShUser user);
	
	
	/***
	 * @title 用户授权
	 * @createTime 2015年9月29日 上午10:49:27
	 * @author dhc
	 */
	void grant(ShUser user);
	
	/**
	 * @title 编辑用户密码
	 * @createTime 2015年9月29日 上午10:59:52
	 * @author dhc
	 */
	void  editPwd(ShUser user);
	/**
	 * @title 通过id删除用户
	 * @createTime 2015年9月28日 下午5:56:32
	 * @author dhc
	 */
	int delete(Long id);
	
	/**
	 * @title 通过id，批量删除用户
	 * @createTime 2015年9月29日 上午10:14:50
	 * @author dhc
	 */
	int batchDelete(Long  ... id);
	
    /**
     * 根据登录名查询用户
     * @param loginName
     * @return
     * @createTime 2015年8月26日 下午5:16:28
     * @author KongXiangyu
     */
    ShUser queryPropertyUserByLoginName(String loginName);

    /**
     * 根据用户id查询
     * @param userId
     * @return
     * @createTime 2015年8月26日 下午5:16:28
     * @author KongXiangyu
     */
    ShUser queryPropertyUserById(Long userId);
    
    /***
     * @title 根据用户id，查询用户
     * @createTime 2015年10月6日 上午10:44:00
     * @author dhc
     */
    List<ShUser> queryPropertyUsersByIds(Long[] userIds);

    /**
     * 查询用户列表
     * @param user
     * @param page
     * @return
     * @createTime 2015年8月26日 下午5:16:28
     * @author KongXiangyu
     */
    DataGrid dataGrid(ShUser user, PageHelper page);
    
    
    /**
     * @title 
     * @createTime 2015年10月16日 下午3:25:50
     * @author dhc
     */
    List<ShUser> getUsers(ShUser user);
    
    /**
     * @title 用户名字重复验证
     * @createTime 2015年9月29日 上午11:25:23
     * @author dhc
     */
    boolean isRepeat(ShUser user);
    
    /**
     * @title 验证员工是否注册
     * @createTime 2015年9月29日 上午11:26:22
     * @author dhc
     */
    boolean isRegest(ShUser user);
    
    /**
     * @title 添加附加属性
     * @createTime 2015年9月29日 下午9:33:54
     * @author dhc
     */
    List<ShUser> addProperty(List<ShUser> users);

}
